mruby 4.0.0
mruby is the lightweight implementation of the Ruby language
Loading...
Searching...
No Matches
boxing_no.h
Go to the documentation of this file.
1
6
7#ifndef MRUBY_BOXING_NO_H
8#define MRUBY_BOXING_NO_H
9
10#define MRB_FIXNUM_SHIFT 0
11#define MRB_SYMBOL_SHIFT 0
12#define MRB_FIXNUM_MIN MRB_INT_MIN
13#define MRB_FIXNUM_MAX MRB_INT_MAX
14
16#ifndef MRB_NO_FLOAT
17 mrb_float f;
18#endif
19 void *p;
20 mrb_int i;
21 mrb_sym sym;
22};
23
24typedef struct mrb_value {
25 union mrb_value_union value;
26 enum mrb_vtype tt;
27} mrb_value;
28
29#define mrb_ptr(o) (o).value.p
30#define mrb_cptr(o) mrb_ptr(o)
31#ifndef MRB_NO_FLOAT
32#define mrb_float(o) (o).value.f
33#endif
34#define mrb_fixnum(o) (o).value.i
35#define mrb_integer(o) mrb_fixnum(o)
36#define mrb_symbol(o) (o).value.sym
37#define mrb_type(o) (o).tt
38#define mrb_unboxed_type(o) (o).tt
39
40#define BOXNO_SET_VALUE(o, ttt, attr, v) do {\
41 (o).tt = ttt;\
42 (o).attr = v;\
43} while (0)
44
45#define SET_NIL_VALUE(r) BOXNO_SET_VALUE(r, MRB_TT_FALSE, value.i, 0)
46#define SET_FALSE_VALUE(r) BOXNO_SET_VALUE(r, MRB_TT_FALSE, value.i, 1)
47#define SET_TRUE_VALUE(r) BOXNO_SET_VALUE(r, MRB_TT_TRUE, value.i, 1)
48#define SET_BOOL_VALUE(r,b) BOXNO_SET_VALUE(r, b ? MRB_TT_TRUE : MRB_TT_FALSE, value.i, 1)
49#define SET_INT_VALUE(mrb,r,n) BOXNO_SET_VALUE(r, MRB_TT_INTEGER, value.i, (n))
50#define SET_FIXNUM_VALUE(r,n) BOXNO_SET_VALUE(r, MRB_TT_INTEGER, value.i, (n))
51#ifndef MRB_NO_FLOAT
52#define SET_FLOAT_VALUE(mrb,r,v) BOXNO_SET_VALUE(r, MRB_TT_FLOAT, value.f, (v))
53#endif
54#define SET_SYM_VALUE(r,v) BOXNO_SET_VALUE(r, MRB_TT_SYMBOL, value.sym, (v))
55#define SET_OBJ_VALUE(r,v) BOXNO_SET_VALUE(r, (((struct RObject*)(v))->tt), value.p, (v))
56#define SET_CPTR_VALUE(mrb,r,v) BOXNO_SET_VALUE(r, MRB_TT_CPTR, value.p, v)
57#define SET_UNDEF_VALUE(r) BOXNO_SET_VALUE(r, MRB_TT_UNDEF, value.i, 0)
58
59#endif /* MRUBY_BOXING_NO_H */
mruby Symbol.
Definition boxing_nan.h:40
Definition boxing_no.h:15